package com.laiketui.order.api.params;

import com.laiketui.domain.mch.CartModel;
import com.laiketui.domain.user.User;
import com.laiketui.domain.user.UserAddress;
import com.laiketui.order.api.dto.OrderRemarkDTO;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 下单参数
 * @author Trick
 * @date 2021/6/28 10:06
 */
@Setter
@Getter
public class UserPlaceOrderParams  implements Serializable {

    //用户ID
    @NotNull
    private User user;
    //商城ID 固定传1
    @NotNull
    private Integer storeId;
    //购物车ID
    @NotBlank
    private List<CartModel> cartModels;
    //会员折扣率
    @NotNull
    private BigDecimal rate;
    /**
     * 期望发货时间
     */
    private Date expectedDeliveryTime;
    //发货地址
    @NotNull
    private UserAddress userAddress;
    //订单备注
    private String remark;
    /**
     * 0 不开票 1 开票
     */
    @NotNull
    private Integer invoice;

    /**
     * 订单类型 1 自营订单 2 pop订单(跟工厂结算)
     */
    @NotNull
    private Integer orderType;

    /**
     * 下单类型1用户下单2店铺下单3平台下单
     */
    @NotNull
    private Integer operationType;
    /**
     * 支付方式 1 结算通 2 余额支付 3 线下汇款
     */
    private Integer payType;

    /**
     * 开票单位名称
     */
    private String organization;

    /**
     * 开票纳税人识别码
     */
    private String taxpayerNumber;

    /**
     * 开票地址
     */
    private String taxAddress;

    /**
     * 开票电话
     */
    private String taxPhone;

    /**
     * 开票账户
     */
    private String taxAccount;

    /**
     * 开票银行
     */
    private String taxBank;


    /**
     * 个人开票身份证
     */
    private String taxCardNo;

    /**
     * 个人开票姓名
     */
    private String taxName;


    /**
     * 1 个人 2 企业
     */
    private Integer taxType;
    /**
     * 店铺订单备注 单个店铺的备注
     */
    private List<OrderRemarkDTO> remarks;


}
